from fastapi import FastAPI
from pydantic import BaseModel
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
import uvicorn

from langchain.schema import HumanMessage, SystemMessage
from langchain.chat_models.gigachat import GigaChat
from langserve import add_routes
from config import GIGA_KEY

class Numbers(BaseModel):
    num1: int
    num2: int

app = FastAPI(title="GigaChain Server", version="1.0", description="Простой API-сервер, использующий runnable-интерфейсы GigaChain")

# Настройка чата с GIGA_KEY
chat = GigaChat(credentials=GIGA_KEY, verify_ssl_certs=False)

# Добавление маршрутов для чата
add_routes(app, chat, path="/joke")

# Подключение статических файлов
app.mount("/static", StaticFiles(directory="/home/soitch/gigachain/static"), name="static")

@app.get("/")
async def read_index():
    return FileResponse("static/templates/index.html")

@app.get("/word")
async def read_word():
    return FileResponse("static/templates/word.html")

@app.get("/joke/кошки")
async def get_joke():
    # Пример шутки о кошках
	
    #messages.append(HumanMessage(content="Придумай шутку о кошках"))
    #res = chat.invoke(messages)
    #messages.append(res)
    #return {"joke": res.content}

	return {"joke": "Почему кошки плохо играют в шахматы? Потому что они смотрят только на короля!"}

@app.post("/calculate")
async def calculate_sum(numbers: Numbers):
    result = numbers.num1 + numbers.num2
    return {"result": result}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)
